package com.apps.java.javanote;

public class _7面向对象 {
    public static void main(String[] args) {
        /**
         * 一、类和对象概述[类是对象的抽象，对象是类的实体]
         * 		什么是对象：万物皆对象，客观存在的事物皆为对象
         *
         *  	什么是类：	 类是对现实生活中一类具有共同属性的行为的事物的抽象，
         *  			 用于确定对象将会拥有的属性和行为。
         *  	类的特点：
         *  		1.类是对象的数据类型
         *  		2.类是具有相同属性和行为的一组对象的集合
         *  	什么是对象的属性：
         *  		对象具有的各种特征，每个对象的每个属性都拥有特定的值。
         * 		什么是对象的行为：
         * 			对象能够执行的操作
         *
         * 		类和对象的关系：
         * 			1.类：	 类是对现实生活中一类就有共同属性和行为的事物的抽象。
         * 			2.对象：是能够看得到摸得着的真实存在的实体。
         * 			3.类是对象的抽象，对象是类的实体
         *
         * 二、类的定义
         * 		类的重要性：是java程序的基本组成单位。
         * 		类的组成：	  属性和行为
         * 			属性：在类中通过成员变量来体现（类中方法外的变量）。
         * 			行为：在类中通过成员方法来体现（和前面的方法相比去掉static关键字即可）。
         *
         * 三、对象的使用
         * 		1.创建对象
         * 			格式：类名 对象名 = new 类名(); ---> Phone p = new Phone();
         * 		2.使用对象
         * 			格式：对象名.变量名 ---> p.brand
         * 		3.使用成员方法
         * 			格式：对象名.方法名() ---> p.call();
         *
         * 四、成员变量和局部变量
         * 			成员变量：类中方法外的变量
         * 			局部变量：方法中的变量
         *
         * 		成员变量和局部变量的区别：
         * 			        区别				 成员变量				局部变量
         * 			类中位置不同：			类中方法外			方法内或者方法声明上
         * 			内存中位置不同：			   堆内存				栈内存
         * 			生命周期不同：		随着对象的存在而存在，	随着方法的调用而存在，
         * 							随着对象的消失而消失。          随着方法的调用完毕而消失。
         * 			初始化值不同：		   有默认的初始化值		没有默认的初始化，必须
         * 												先定义、赋值才能使用。
         *
         * 五、封装
         * 		封装概述：
         * 			1.是面向对象三大特征之一(封装、继承、多态)
         * 			2.是面向对象编程语言对客观世界的模拟，客观世界里成员变量都是隐藏在对象内部的，
         * 			     外界是无法直接操作的。
         * 		封装的原则：
         * 			将类的某些信息隐藏在类内部，不允许外部程序直接访问，而是通过该类提供的方法来实现对隐藏
         * 			信息的操作和访问成员变量private，提供对应的getXxx()/setXxx()方法
         * 		封装的好处：
         * 			通过方法来控制成员变量的操作，提高了代码安全性，把代码用方法进行封装，提高代码复用性。
         *
         *	 private关键字
         * 		private关键字
         * 			1.是一个权限修饰符。
         * 			2.可以修饰成员（成员变量和成员方法）。
         * 			3.作用是保护成员不被别的类使用，被private修饰的成员只在本类中才能访问。
         *
         * 		针对private修饰的成员变量，如果需要被其他类使用，提供相应的操作
         * 			1.提供"get变量名()"方法，用于获取成员变量的值，方法用public修饰。
         * 			2.提供"set变量名(参数)"方法，用于设置成员变量的值，方法用public修饰。
         *
         * 		private关键字的使用
         * 			一个标准类的编写：
         * 			1.把成员变用private修饰
         * 			2.提供对应的getXxx()/setXxx()方法
         *
         * 	 this关键字：
         * 		this修饰的变量用于指代成员变量
         * 			1.方法的形参如果与成员变量同名，不带this修饰的变量指的是形参，而不是成员变量
         * 			2.方法的形参没有与成员变量同名，不带this修饰的变量指的是成员变量
         * 		什么时候使用this：解决局部变量隐藏成员变量
         *
         * 六、构造方法
         * 		概述：构造方法是一种特殊的方法  作用：创建对象。
         * 		格式：
         * 			public class 类名{
         * 				修饰符 类名(参数){
         * 				}
         * 			}
         * 		功能：主要是完成对象数据的初始化。
         * 		注意事项：
         * 			构造方法的创建：
         * 				1.如果没有定义构造方法，系统将给出一个默认的无参构造方法
         * 				2.如果定义了构造方法，系统将不再提供默认的构造方法
         * 			构造方法的重载：
         * 				如果自定义了带参构造方法，还要使用无参构造方法，就必须手动写一个无参构造方法
         * 			推荐使用方式：
         * 				无论是否使用，都手工书写无参构造方法
         *
         * *标准类制作*
         * 		1.成员变量：
         * 			使用private修饰
         * 		2.构造方法：
         * 			提供一个无参构造方法
         * 			提供一个带多个参数的构造方法
         * 		3.成员方法：
         * 			提供每一个成员变量对应的setXxx()/getXxx()
         * 			提供一个显示对象信息的show()
         * 		4.创建对象并为其成员变量赋值的两种方式：
         * 			无参构造方法创建对象后使用setXxx()赋值
         * 			使用带参构造方法直接创建带有属性值的对象
         */

		/*
		_7面向对象案例iPhone ip = new _7面向对象案例iPhone();
		ip.setName("王梓");
		ip.setAge(140);
		System.out.println(ip.getAge()+ip.getName());
		*/


    }




		/*
			//类的定义：定义类
			public class iPhone{

				//成员变量: 数据类型  变量;
				String brand;
				int price;

				//成员方法
				public void call(){
					System.out.println("打电话");
				}
				public void sendMessage(){
					System.out.println("发短信");
				}

			}
		*/
}
